const Koa = require('koa');
const Router = require('koa-router');
const bodyParser = require('koa-bodyparser');
const passport = require('koa-passport')
const usersRouter = require('./routes/api/users');
// 加载数据库连接
require('./models/connect');

// 实例化 koa
const app = new Koa();
const router = new Router();

// 注册中间件
app.use(bodyParser());
app.use(passport.initialize());
app.use(passport.session());

// 回调到 config 文件中 passport.js
require('./config/passport')(passport);


// 路由
router.get('/', async ctx => {
    console.log();
    ctx.body = {msg: 'hello koa'};
});

// 配置路由地址
router.use('/api/users', usersRouter);

// 配置路由
app
    .use(router.routes())
    .use(router.allowedMethods());
/*
 * router.allowedMethods()作用： 这是官方文档的推荐用法,我们可以
 * 看到 router.allowedMethods()用在了路由匹配 router.routes()之后,所以在当所有
 * 路由中间件最后调用.此时根据 ctx.status 设置 response 响应头 
 */

const port = process.env.PORT || 3000;

app.listen(port, () => {
    console.log("app is running");
});